// 1. 定义请求返回值的整体类型
export interface DataType {
    content: videoListContentType[];
    first: boolean;
    last: boolean;
    number: number;
    numberOfElements: number;
    size: string;
    sort: null;
    totalPages: number;
}


// 2. 定义视频列表的类型
export interface videoListContentType {
    aiyigeApplication: string;
    algorithmSortValue: number;
    avocationTags: AvocationTagType[];
    channel: string;
    cityId: string;
    cityName: string;
    cover: string[];
    createTime: number;
    creator: string;
    creatorBackup: CreatorBackupType;
    difficultDegreeValue: number;
    editHighestVersion: string;
    enclosureCount: number;
    id: string;
    initExposureNum: number;
    mediaSummary: MediaSummaryType;
    momentClassificationBackup: MomentClassificationBackupType;
    moreBackup: MoreBackupType;
    needPromotion: number;
    notVipPromotion: number;
    num: number;
    onsellTime: number;
    onsellUpdateTime: number;
    popTrainingIndex: number;
    recDegree: number;
    router: string;
    statisticsBackup: StatisticsBackupType;
    status: string;
    subject: string;
    tags: TagType[];
    title: string;
    updateTime: number;
    version: number;
    vipPromotion: number;
}

// 3. 定义视频列表中avocationTags的类型
export interface AvocationTagType {
    id: string;
    label: string;
    name: string;
}

// 4. 定义视频列表中creatorBackup的类型
export interface CreatorBackupType {
    avatar: string;
    certificationType?: string;
    id: string;
    level: number;
    name: string;
    sellerFavorableValue?: number;
    type?: string;
    vipExpireTime?: number;
    vipGrade: number;
}

// 5. 定义视频列表中mediaSummary的类型
export interface MediaSummaryType {
    count: number;
    duration: number;
}

// 6. 定义视频列表中momentClassificationBackup的类型
export interface MomentClassificationBackupType {
    classification: string;
    originalStatement?: number;
    originAuthor?: string;
    originSource?: string;
    workTitle: string;
}

// 7. 定义视频列表中moreBackup的类型
export interface MoreBackupType {
    totalDuration: number;
    videoCount: number;
    videos: VideoType[];
}


// 8. 定义videos的类型
export interface VideoType {
    audioExtracted: boolean;
    buyed: boolean;
    canPreview: boolean;
    cover: string;
    downloaded: boolean;
    duration: number;
    free: number | string;
    hlsUrl: string;
    index: number;
    itemType: number;
    notNulUrl: string;
    originUrl: string;
    originVideoMd5: string;
    persistentId: string;
    sectionNum?: string;
    selected: boolean;
    size: number;
    sortNum: number;
    title: string;
    url: string;
}

// 9. 定义statisticsBackup的类型
export interface StatisticsBackupType {
    actualSellCount: number;
    commentCount: number;
    enquiryCount: number;
    exposureCount: number;
    favoriteCount: number;
    liveStatus: number;
    lockCount: number;
    playBackDuration: number;
    praiseCount: number;
    requireAccessoryCount: number;
    requireLiveCourseCount: number;
    requireMajorCourseCount: number;
    requireMusicCount: number;
    requireVideoCourseCount: number;
    reviewCount: number;
    sellAmount: number;
    sellCount: number;
    shareAmount: number;
    shareCount: number;
    signupCount: number;
    studentCount: number;
    userCacheCount: number;
    viewCount: number;
}

// 10. 定义tags的类型
export interface TagType {
    groupType: string;
    id: string;
    name: string;
}


// 11. 定义可隐藏的动态条件的数据类型
export interface ChoisesType {
    content: ChoisesContentType[];
}
export interface ChoisesContentType {
    choises: ChoiseItemType[];
    formType: string;
    label: string;
    name: string;
    style: string;
    valueType: string;
}

export interface ChoiseItemType {
    id: string;
    name: string;
}


// 兴趣技能的数据类型
export interface interestData {
    content: interestContent[];
    number: number;
    numberOfElements: number;
    size: string;
    sort: null;
    statistics: null;
    totalElements: number;
    totalPages: number;
    useOffset: boolean;
}

export interface interestContent {
    groupType: string;
    id: string;
    name: string;
}